home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#) Gemini\vaproto.h
- * @(#) Stefan Eissing, 21. August 1993
- *
- *
- * Beschreibung: Definition der Nachrichten des Venus <-> Accessory
- * Protokolls
- *
- * 07.12.: AV_PATH_UPDATE, AV_WHAT_IZIT, AV_DRAG_ON_WINDOW eingebaut.
- */
-
- #ifndef __vaproto__
- #define __vaproto__
-
- /* Message-Nummern für das xAcc-Protokoll von Konrad Hinsen
- * Venus gibt bei ACC_ID "VENUS.APP" und Gemini gibt "GEMINI.APP"
- * zurück. Gemini unterstützt xAcc der Stufe 0.
- */
- #define ACC_ID 0x400
- #define ACC_OPEN 0x401
- #define ACC_CLOSE 0x402
- #define ACC_ACC 0x403
-
- /* Message-Nummern für die Kommunikation zwischen Venus und
- * verschiedenen Accesories.
- * Sollten in Nachrichten Pfade oder Dateinamen vorkommen, so
- * muß immer der absolute Pfad angegeben werden (also mit Laufwerk)
- * und die Laufwerksbuchstaben müssen Großbuchstaben sein. Pfade enden
- * IMMER mit einem Backslash!
- *
- * Nachrichten von Venus beginnen mit VA (Venus -> Accessory).
- * Nachrichten an Venus beginnen mit AV (Accessory -> Venus).
- *
- * Mit AV_PROTOKOLL kann jedes Acc nachfragen, welche Nachrichten
- * verstanden werden (Dies ist ja bei VENUS und GEMINI
- * unterschiedlich! Es wäre schön, wenn auch andere Programme auf
- * dieses Protokoll reagieren würden. Zumindest AV_SENDKEY ist
- * sicher leicht zu implementieren und ist die einzige Methode, wie
- * über Nachrichten Tastaturdrücke simuliert werden können.
- *
- * Unter normalem TOS fragt dazu ein Accessory, wenn es eine
- * AC_CLOSE-Nachricht vom AES erhalten hat, die Applikation 0
- * mit AV_PROTOKOLL, ob sie etwas davon versteht.
- * Unter MultiTOS muß aber das Programm nicht mehr die ID 0
- * haben, zudem kommt es (fast) nicht mehr zu AC_CLOSE-Nachrichten.
- * Es können auch nicht nur Accessories, sondern auch normale
- * Programme mit Gemini kommunizieren wollen. Was tun?
- * Wenn es mehr als eine Hauptapplikation geben kann, dann sollte
- * das Programm/Accessory versuchen, mit GEMINI Kontakt aufzunehmen.
- * Die ID kann ja mit appl_find ermittelt werden. Scheitert dies, so
- * kann noch nach AVSERVER oder dem Inhalt der (AES-)Environmentvariable
- * AVSERVER gesucht werden. Besonders die letzte Möglichkeit erlaubt
- * eine leichte Konfiguration "von außen". Die neuen Versionen der
- * Library VAFUNC von Stephan Gerle (in gutsortierten Mailboxen
- * erhältlich) verfahren fast genauso.
- */
-
- /* AV_PROTOKOLL: Mit dieser Nachrichtennummer sollte man bei
- * anderen Applikationen und auch VENUS/GEMINI nachfragen, ob
- * und welche Nachrichten sie versteht.
- */
- #define AV_PROTOKOLL 0x4700
- /*
- * Word 6+7: Pointer auf den Accessorynamen, wie er bei
- * appl_find benutzt werden muß; also 8 Zeichen lang
- * nullterminiert (char name[9]).
- * Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
- * Word 3:
- * Bit 0: (VA_SETSTATUS)
- * Bit 1: (VA_START)
- * Alle anderen Bits sind für Erweiterungen reserviert und sollten
- * daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
- * Bits in den Worten 4 und 5.
- */
-
- /* VA_PROTOSTATUS: Dem Sender von AV_PROTOKOLL wird mitgeteilt, daß
- * der Empfänger etwas von diesem Protokoll weiß. Die Worte 3-7 des
- * Nachrichtenpuffers enthalten die Information, welche Nachrichten
- * verstanden werden. Gesetzte Bits stehen dafür, daß eine Nachricht
- * (Nachrichtengruppe) verstanden werden.
- */
- #define VA_PROTOSTATUS 0x4701
- /*
- * Word 6+7: Pointer auf den Programmnamen, wie er bei
- * appl_find benutzt werden muß; also 8 Zeichen lang
- * nullterminiert (char name[9]).
- * Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
- * Word 3:
- * Bit 0 (AV_SENDKEY)
- * Bit 1 (AV_ASKFILEFONT)
- * Bit 2 (AV_ASKCONFONT, AV_OPENCONSOLE)
- * Bit 3 (AV_ASKOBJECT)
- * Bit 4 (AV_OPENWIND)
- * Bit 5 (AV_STARTPROG)
- * Bit 6 (AV_ACCWINDOPEN, AV_ACCWINDCLOSED)
- * Bit 7 (AV_STATUS, AV_GETSTATUS)
- * Bit 8 (AV_COPY_DRAGGED)
- * Bit 9 (AV_PATH_UPDATE, AV_WHAT_IZIT, AV_DRAG_ON_WINDOW)
- * Bit 10 (AV_EXIT)
- *
- * Alle anderen Bits sind für Erweiterungen reserviert und sollten
- * daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
- * Bits in den Worten 4 und 5.
- *
- * AV_SENDKEY kann sicher jeder leicht in seine Programme einbauen.
- * Bei AV_OPENWIND könnte ein Hauptprogramm auch seine "normale"
- * Routine zum Öffnen eines Dokumentes anwerfen und dabei den
- * übergebenen Pfad benutzen. Dies ist zusammen mit der Benutzung
- * von TreeView sicher eine einfache Art, Dateien aus anderen Ordnern
- * oder Laufwerken zu laden.
- */
-
- /* AV_GETSTATUS: Ein Accessory erfragt bei Venus den aktuellen
- * Status, den es Venus mit AV_STATUS mal gegeben hat.
- */
- #define AV_GETSTATUS 0x4703
-
- /* AV_STATUS: Ein Accessory kann Venus seinen Status mitteilen,
- * der dann von Venus im INF-File gespeichert wird und mit
- * AV_GETSTATUS wieder abgerufen werden kann.
- * Zuvor MUSS es sich aber mit AV_PROTOKOLL anmelden!
- * Word 3+4: Pointer auf einen String, der keine Steuerzeichen
- * enthalten darf und nicht länger als 256 Zeichen
- * sein darf. Dieser Pointer darf allerdings NULL sein.
- */
- #define AV_STATUS 0x4704
-
- /* VA_SETSTATUS: Venus teilt dem Accessory den abgespeicherten
- * Status bei Nachfrage durch AV_GETSTATUS mit. Dieser kann dann
- * von einem Accessory gesetzt werden.
- * Word 3+4: Pointer auf einen String, der keine Steuerzeichen
- * enthält.
- * Dieser Pointer kann allerdings NULL sein, dann war
- * kein Status gespeichert.
- */
- #define VA_SETSTATUS 0x4705
-
- /* AV_SENDKEY: Ein Acc sendet VENUS/GEMINI einen Tastaturevent, den
- * es selber vielleicht nicht versteht.
- * Word 3 = Tastaturstatus ev_mmokstate
- * Word 4 = Scancode der gedrückten Taste ev_mkreturn
- */
- #define AV_SENDKEY 0x4710
-
- /* VA_START: Accessory wird aktiviert. Word 3 + 4 enthalten einen
- * Pointer auf eine Kommandozeile, der auch NULL sein kann.
- * In der Kommandozeile stehen Pfade oder Dateinamen.
- */
- #define VA_START 0x4711
-
- /* AV_ASKFILEFONT: Frage nach dem eingestellten Zeichensatz
- * für Dateinamen.
- */
- #define AV_ASKFILEFONT 0x4712
-
- /* VA_FILEFONT: Gibt den derzeit eingestellten Zeichensatz.
- * Word 3 = Dateifontnummer (font id)
- * Word 4 = Dateifontgröße (in points)
- */
- #define VA_FILEFONT 0x4713
-
- /* (Nur Gemini) AV_ASKCONFONT: Frage nach dem eingestellten
- * Zeichensatz für das Console-Fenster.
- */
- #define AV_ASKCONFONT 0x4714
-
- /* VA_CONFONT: Gibt den derzeit eingestellten Zeichensatz.
- * Word 3 = Consolefontnummer (font id)
- * Word 4 = Consolefontgröße (in points)
- */
- #define VA_CONFONT 0x4715
-
- /* AV_ASKOBJECT: Fragt nach dem derzeit selektiertem Objekt.
- * Es wird der Name des derzeit selektierten Objektes zurückgegeben.
- * Ist kein Objekt selektiert, so ist der String leer.
- * Sind mehrere Objekte selektiert, so sind ihre Namen durch Leer-
- * zeichen getrennt.
- */
- #define AV_ASKOBJECT 0x4716
-
- /* VA_OBJECT: Gibt Namen der derzeit selektierten Objekte.
- * Aufbau wie bei VA_START
- */
- #define VA_OBJECT 0x4717
-
- /* (Nur Gemini)AV_OPENCONSOLE: Venus soll das Console-Fenster öffnen.
- * Ist es schon offen, so wird es nach vorne gebracht. Diese Aktion
- * ist vor allen Dingen sinnvoll, wenn ein Accessory ein TOS-Programm
- * mittels der system()-Funktion starten will (Warnung: Auf keinen
- * Fall darf ein GEM-Programm von einem Accessory via system()
- * gestartet werden! (siehe auch AV_STARTPROG)
- * Auch sollte diese Nachricht nur auf ausdrücklichen Wunsch des
- * Benutzers gebraucht werden, da es ihn sonst nur verwirren kann.
- *
- * ACHTUNG: Diese Nachricht steht nur in Gemini.app zur Verfügung.
- */
- #define AV_OPENCONSOLE 0x4718
-
- /* VA_CONSOLEOPEN: Gibt zurück, ob das Console-Fenster nach vorne
- * gebracht worden ist. Word 3 == 0 (nein) != 0 (ja)
- */
- #define VA_CONSOLEOPEN 0x4719
-
- /* AV_OPENWIND: Venus soll ein Datei-Fenster öffnen.
- * Dies sollte auch nur geschehen, wenn die Ursache für den
- * Benutzer ersichtlich ist.
- * Word 3+4 (Pointer) Pfad für das Fenster (s.o.).
- * Word 5+6 (Pointer) Wildcard für darzustellende Dateien.
- */
- #define AV_OPENWIND 0x4720
-
- /* VA_WINDOPEN: Gibt an, ob das Fenster geöffnet werden konnte.
- * siehe VA_CONSOLEOPEN
- */
- #define VA_WINDOPEN 0x4721
-
-
- /* Word 7 in AV_STARTPROG und Word 4 und 7 in VA_PROGSTART sind
- * neu seit dem 29. März 1992.
- */
-
- /* AV_STARTPROG: Venus soll ein Programm starten. Hierbei
- * werden die angemeldeten Applikationen der Venus mit
- * berücksichtigt. Man kann also auch eine Datei angeben, für
- * die Venus dann ein Programm sucht.
- * Word 3+4 (Pointer) Programmname mit kompletten Pfad
- * Word 5+6 (Pointer) Kommandozeile (kann NULL sein)
- * Word 7 Beliebiges 16-Bit Wort, das in VA_PROGSTART wieder
- * zurückgeliefert wird.
- */
- #define AV_STARTPROG 0x4722
-
- /* VA_PROGSTART: Gibt an, ob Venus das Programm startet.
- * Word 3 == 0: nicht gestartet, != 0 gestartet
- * Im Allgemeinen wird das Acc. im Fehlerfall sofort eine
- * Nachricht bekommen. Wenn das Programm aber gestartet wird, erhält
- * das Acc. diese Nachricht erst nach dem Start des Programms, da
- * die Routine, die den Pexec macht nicht mehr wissen kann, das ein
- * Acc. noch schnell eine Nachricht bekommen muß. Bei einem GEM-
- * Programm, kann man der Erfolg auch an dem AC_CLOSE erkennen.
- * Auch ist die Fehlererkennung nicht optimal. Der Rückgabewert weist
- * auch nicht aus, das das Programm fehlerfrei gelaufen ist.
- *
- * Word 4 Returncode des gestarteten Programms (so vorhanden)
- * Word 7 16-Bit Wort aus AV_STARTPROG
- */
- #define VA_PROGSTART 0x4723
-
- /* AV_ACCWINDOPEN: Mit dieser Nachricht kann ein Acc Venus mitteilen, daß
- * es ein Fenster geöffnet hat.
- * Word 3 AES-Handle des geöffneten Fensters
- */
- #define AV_ACCWINDOPEN 0x4724
-
- /* VA_DRAGACCWIND: Venus teilt dem Acc mit, daß Objekte auf eines seiner
- * mittels AV_ACCWINDOPEN angemeldeten Fenster gezogen worden sind.
- * Word 3 AES-Handle des Fensters
- * Word 4 X-Position der Maus
- * Word 5 Y-Position der Maus
- * Word 6+7 Pointer auf einen String, der die Namen der Objekte enthält.
- */
- #define VA_DRAGACCWIND 0x4725
-
- /* AV_ACCWINDCLOSED: Acc teilt Venus mit, daß sein Fenster geschlossen
- * wurde. Dies braucht das Acc nur in dem Fall zu tun, wenn es selbst das
- * Fenster schließt. Bekommt es eine AC_CLOSE Mitteilung vom AES, so weiß
- * Venus schon, daß alle Fenster weg sind.
- * Word 3 AES-Handle des Fensters
- */
- #define AV_ACCWINDCLOSED 0x4726
-
-
- /* Neu seit dem 11.04.1991!!!
- */
-
- /* AV_COPY_DRAGGED: Accessorie teilt Venus mit, daß die Objekte,
- * die auf sein Fenster gezogen wurden, zu kopieren sind.
- * Dies kann z.B. nach dem Ziehen von Objekten auf das TreeView-
- * Fenster erwünscht sein. Diese Nachricht ist nur als Antwort
- * auf VA_DRAGACCWIND gedacht.
- * Word 3 Tastaturstatus (Alternate, Control, Shift), der bei
- * der VA_DRAGACCWIND-Nachricht übergeben wurde
- * Word 4+5 Pointer auf einen String, der den Namen des Zielobjektes
- * enthält. Dies *muß* ein Pfad sein!
- */
- #define AV_COPY_DRAGGED 0x4728
-
- /* VA_COPY_COMPLETE: Antwort auf AV_COPY.
- * Word 3 Status des Kopierens. (!= 0 heißt, daß wirklich etwas
- * kopiert oder verschoben wurde. Dies kann das Acc evtl.
- * zum Neuaufbau seines Fensters nutzen.)
- */
- #define VA_COPY_COMPLETE 0x4729
-
-
- /* AV_PATH_UPDATE: Programm/Accessory teilt Gemini mit, daß sich
- * der Inhalt eines Verzeichnisses geändert hat. Gemini stellt dann
- * dieses Verzeichnis (so ein Fenster davon offen ist) neu dar. Dies
- * wirkt auch auf die Unterverzeichnisse; Update von "C:\" sorgt
- * dafür, daß alles, was mit Laufwerk C:\ zu tun hat, neu eingelesen
- * wird.
- *
- * Word 3+4 Pointer auf den absolten Pfad
- */
- #define AV_PATH_UPDATE 0x4730
-
-
- /* AV_WHAT_IZIT: Programm/Accessory fragt Gemini, was sich an
- * Position X/Y auf dem Bildschirm befindet. Die Koordinaten sind
- * normale Pixelkoordinaten mit Ursprung in der linken oberen
- * Bildschirmecke. Antwort ist VA_THAT_IZIT.
- * Word 3 X-Koordinate
- * Word 4 Y-Koordinate
- */
- #define AV_WHAT_IZIT 0x4732
-
- /* VA_THAT_IZIT:
- * Word 3 ID der zuständigen Applikation
- * Word 4 Typ des Objektes
- * word 5+6 Zeiger auf den Namen des Objektes (oder NULL, falls nicht
- * vorhanden)
- *
- * Typ ist wie folgt: (alle anderen für Erweiterungen reserviert.)
- */
- #define VA_OB_UNKNOWN 0
- #define VA_OB_TRASHCAN 1
- #define VA_OB_SHREDDER 2
- #define VA_OB_CLIPBOARD 3
- #define VA_OB_FILE 4
- #define VA_OB_FOLDER 5
- #define VA_OB_DRIVE 6
- #define VA_OB_WINDOW 7
-
- #define VA_THAT_IZIT 0x4733
-
- /* AV_DRAG_ON_WINDOW: Programm/Accessory teilt Gemini mit, daß
- * Objekte auf eines seiner mittels AV_WHATIZIT erfragten Fenster
- * gezogen worden sind. Die Namen sind Namen von Dateien, Ordnern
- * oder Laufwerken, jeweils durch ein Leerzeichen getrennt. Namen
- * von Ordnern oder Laufwerken enden mit einem Backslash.
- *
- * Word 3 AES-Handle des Fensters
- * Word 4 X-Position, wohin die Maus gezogen wurde
- * Word 5 Y-Position, wohin die Maus gezogen wurde
- * Word 6+7 Pointer auf einen String, der die Namen der Objekte enthält.
- *
- * (noch nicht implementiert)
- *
- */
- #define AV_DRAG_ON_WINDOW 0x4734
-
- /* AV_EXIT: Ein Programm/Accessory teilt Gemini mit, daß es nicht
- * mehr am Protokoll teilnimmt (normalerweisem, weil es beendet
- * wurde).
- * Word 3 AES-ID des Programms/Accessories
- */
- #define AV_EXIT 0x4736
-
- #endif